"""
工具函数模块
"""

import os
import sys
from typing import Optional
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QStyle, QApplication

def get_app_icon(name: str, default_style_icon: QStyle.StandardPixmap = None) -> QIcon:
    """
    获取应用图标，首先尝试从静态资源目录加载，如果失败则使用系统默认图标
    
    参数:
        name: 图标名称
        default_style_icon: 系统默认图标类型
    """
    # 应用根目录
    app_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    icon_path = os.path.join(app_dir, 'static', f'{name}.png')
    
    # 先尝试从静态资源目录加载
    if os.path.exists(icon_path):
        return QIcon(icon_path)
    
    # 如果失败且提供了默认图标类型，则使用系统默认图标
    if default_style_icon is not None:
        app = QApplication.instance()
        if app:
            return app.style().standardIcon(default_style_icon)
    
    # 返回空图标
    return QIcon()

def format_file_size(size_bytes: int) -> str:
    """
    格式化文件大小显示
    
    参数:
        size_bytes: 文件大小（字节）
        
    返回:
        格式化后的文件大小字符串，如'1.5 KB'，'2.3 MB'等
    """
    if size_bytes < 1024:
        return f"{size_bytes} B"
    elif size_bytes < 1024 * 1024:
        return f"{size_bytes/1024:.1f} KB"
    elif size_bytes < 1024 * 1024 * 1024:
        return f"{size_bytes/(1024*1024):.1f} MB"
    else:
        return f"{size_bytes/(1024*1024*1024):.1f} GB" 